package com.spring.core.metrics;

import java.util.function.Supplier;

/**
 * @file StartupStep
 * @brief StartupStep
 * @details StartupStep
 * @version 1.0
 * @author liyuncong
 * @date 2022-12-08
 *
 * Edit History
 * ----------------------------------------------------------------------------
 * DATE                     NAME               DESCRIPTION
 * 2022-12-08               liyuncong          Created
 *
 */
public interface StartupStep {

    String getName();

    long getId();

    Long getParentId();

    StartupStep tag(String key, String value);

    StartupStep tag(String key, Supplier<String> value);

    StartupStep.Tags getTags();

    void end();

    public interface Tag {
        String getKey();

        String getValue();
    }

    public interface Tags extends Iterable<StartupStep.Tag> {

    }
}
